function f(a="a", b="b", c="c") = [a,b,c];
echo("0 args");
echo("f()", f());
echo("1 arg, 0 named");
echo("f(1)", f(1));
echo("1 arg, 1 named");
echo("f(a=1)", f(a=1));
echo("f(b=2)", f(b=2));
echo("f(c=3)", f(c=3));
echo("2 args, 0 named");
echo("f(1,2)", f(1,2));
echo("2 args, 1 named");
echo("f(a=1,2)", f(a=1,2));
echo("f(2,a=1)", f(2,a=1));
echo("f(b=2,1)", f(b=2,1));
echo("f(1,b=2)", f(1,b=2));
echo("f(c=3,1)", f(c=3,1));
echo("f(1,c=3)", f(1,c=3));
echo("2 args, 2 named");
echo("f(a=1,b=2)", f(a=1,b=2));
echo("f(b=2,a=1)", f(b=2,a=1));
echo("f(a=1,c=3)", f(a=1,c=3));
echo("f(c=3,a=1)", f(c=3,a=1));
echo("f(b=2,c=3)", f(b=2,c=3));
echo("f(c=3,b=2)", f(c=3,b=2));
echo("2 args, duplicate naming");
echo("f(a=1,a=1)", f(a=1,a=1));
echo("f(b=2,b=2)", f(b=2,b=2));
echo("f(c=3,c=3)", f(c=3,c=3));
echo("3 args, 0 named");
echo("f(1,2,3)", f(1,2,3));
echo("3 args, 1 named");
echo("f(a=1,2,3)", f(a=1,2,3));
echo("f(2,a=1,3)", f(2,a=1,3));
echo("f(2,3,a=1)", f(2,3,a=1));
echo("f(b=2,1,3)", f(b=2,1,3));
echo("f(1,b=2,3)", f(1,b=2,3));
echo("f(1,3,b=2)", f(1,3,b=2));
echo("f(c=3,1,2)", f(c=3,1,2));
echo("f(1,c=3,2)", f(1,c=3,2));
echo("f(1,2,c=3)", f(1,2,c=3));
echo("3 args, 2 named");
echo("f(a=1,b=2,3)", f(a=1,b=2,3)); // a,b names in order
echo("f(a=1,3,b=2)", f(a=1,3,b=2));
echo("f(3,a=1,b=2)", f(3,a=1,b=2));
echo("f(b=2,a=1,3)", f(b=2,a=1,3)); // a,b names out of order
echo("f(b=2,3,a=1)", f(b=2,3,a=1));
echo("f(3,b=2,a=1)", f(3,b=2,a=1));
echo("f(a=1,c=3,2)", f(a=1,c=3,2)); // a,c names in order
echo("f(a=1,2,c=3)", f(a=1,2,c=3));
echo("f(2,a=1,c=3)", f(2,a=1,c=3));
echo("f(c=3,a=1,2)", f(c=3,a=1,2)); // a,c names out of order
echo("f(c=3,2,a=1)", f(c=3,2,a=1));
echo("f(2,c=3,a=1)", f(2,c=3,a=1));
echo("f(b=2,c=3,1)", f(b=2,c=3,1)); // b,c names in order
echo("f(b=2,1,c=3)", f(b=2,1,c=3));
echo("f(1,b=2,c=3)", f(1,b=2,c=3));
echo("f(c=3,b=2,1)", f(c=3,b=2,1)); // b,c names out of order
echo("f(c=3,1,b=2)", f(c=3,1,b=2));
echo("f(1,c=3,b=2)", f(1,c=3,b=2));
echo("3 args, 3 named");
echo("f(a=1,b=2,c=3)", f(a=1,b=2,c=3));
echo("f(a=1,c=3,b=2)", f(a=1,c=3,b=2));
echo("f(b=2,a=1,c=3)", f(b=2,a=1,c=3));
echo("f(b=2,c=3,a=1)", f(b=2,c=3,a=1));
echo("f(c=3,a=1,b=2)", f(c=3,a=1,b=2));
echo("f(c=3,b=2,a=1)", f(c=3,b=2,a=1));
echo("3 args, duplicate naming");
echo("f(a=1,b=2,a=1)", f(a=1,b=2,a=1));
echo("f(a=1,a=1,b=2)", f(a=1,a=1,b=2));
echo("f(b=2,a=1,b=2)", f(b=2,a=1,b=2));
echo("f(b=2,b=2,a=1)", f(b=2,b=2,a=1));
echo("f(a=1,c=3,a=1)", f(a=1,c=3,a=1));
echo("f(a=1,a=1,c=3)", f(a=1,a=1,c=3));
echo("f(c=3,a=1,c=3)", f(c=3,a=1,c=3));
echo("f(c=3,c=3,a=1)", f(c=3,c=3,a=1));
echo("f(b=2,c=3,b=2)", f(b=2,c=3,b=2));
echo("f(b=2,b=2,c=3)", f(b=2,b=2,c=3));
echo("f(c=3,b=2,c=3)", f(c=3,b=2,c=3));
echo("f(c=3,c=3,b=2)", f(c=3,c=3,b=2));
echo("4 args (1 extra)");
echo("f(1,2,3,4)", f(1,2,3,4));
echo("f($d=4,1,2,3)", f($d=4,1,2,3));
echo("f(1,$d=4,2,3)", f(1,$d=4,2,3));
echo("f(1,2,$d=4,3)", f(1,2,$d=4,3));
echo("f(1,2,3,$d=4)", f(1,2,3,$d=4));
echo("f(d=4,1,2,3)", f(d=4,1,2,3));
echo("f(1,d=4,2,3)", f(1,d=4,2,3));
echo("f(1,2,d=4,3)", f(1,2,d=4,3));
echo("f(1,2,3,d=4)", f(1,2,3,d=4));
echo("f($d=4,a=1,b=2,c=3)", f($d=4,a=1,b=2,c=3));
echo("f(a=1,$d=4,b=2,c=3)", f(a=1,$d=4,b=2,c=3));
echo("f(a=1,b=2,$d=4,c=3)", f(a=1,b=2,$d=4,c=3));
echo("f(a=1,b=2,c=3,$d=4)", f(a=1,b=2,c=3,$d=4));
echo("f(d=4,a=1,b=2,c=3)", f(d=4,a=1,b=2,c=3));
echo("f(a=1,d=4,b=2,c=3)", f(a=1,d=4,b=2,c=3));
echo("f(a=1,b=2,d=4,c=3)", f(a=1,b=2,d=4,c=3));
echo("f(a=1,b=2,c=3,d=4)", f(a=1,b=2,c=3,d=4));
echo("5 args (2 extra)");
echo("f(1,2,3,4,5)", f(1,2,3,4,5));
echo("f($d=4,$d=4,a=1,b=2,c=3)", f($d=4,$d=4,a=1,b=2,c=3));
echo("f($d=4,a=1,$d=4,b=2,c=3)", f($d=4,a=1,$d=4,b=2,c=3));
echo("f($d=4,a=1,b=2,$d=4,c=3)", f($d=4,a=1,b=2,$d=4,c=3));
echo("f($d=4,a=1,b=2,c=3,$d=4)", f($d=4,a=1,b=2,c=3,$d=4));
echo("f(a=1,$d=4,$d=4,b=2,c=3)", f(a=1,$d=4,$d=4,b=2,c=3));
echo("f(a=1,$d=4,b=2,$d=4,c=3)", f(a=1,$d=4,b=2,$d=4,c=3));
echo("f(a=1,$d=4,b=2,c=3,$d=4)", f(a=1,$d=4,b=2,c=3,$d=4));
echo("f(a=1,b=2,$d=4,$d=4,c=3)", f(a=1,b=2,$d=4,$d=4,c=3));
echo("f(a=1,b=2,$d=4,c=3,$d=4)", f(a=1,b=2,$d=4,c=3,$d=4));
echo("f(a=1,b=2,c=3,$d=4,$d=4)", f(a=1,b=2,c=3,$d=4,$d=4));
echo("f(d=4,d=4,a=1,b=2,c=3)", f(d=4,d=4,a=1,b=2,c=3));
echo("f(d=4,a=1,d=4,b=2,c=3)", f(d=4,a=1,d=4,b=2,c=3));
echo("f(d=4,a=1,b=2,d=4,c=3)", f(d=4,a=1,b=2,d=4,c=3));
echo("f(d=4,a=1,b=2,c=3,d=4)", f(d=4,a=1,b=2,c=3,d=4));
echo("f(a=1,d=4,d=4,b=2,c=3)", f(a=1,d=4,d=4,b=2,c=3));
echo("f(a=1,d=4,b=2,d=4,c=3)", f(a=1,d=4,b=2,d=4,c=3));
echo("f(a=1,d=4,b=2,c=3,d=4)", f(a=1,d=4,b=2,c=3,d=4));
echo("f(a=1,b=2,d=4,d=4,c=3)", f(a=1,b=2,d=4,d=4,c=3));
echo("f(a=1,b=2,d=4,c=3,d=4)", f(a=1,b=2,d=4,c=3,d=4));
echo("f(a=1,b=2,c=3,d=4,d=4)", f(a=1,b=2,c=3,d=4,d=4));
